package portal.facade;

import integracion.rest.entities.Ranking;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import Utils.Helpers;
import portal.converter.convVo;
import portal.ejb.AdministradorCompras;
import portal.ejb.AdministradorConfigs;
import portal.ejb.AdministradorProductos;
import portal.ejb.AdministradorUsuarios;
import portal.entities.Config;
import portal.entities.Producto;
import portal.entities.ProductoElectroDomestico;
import portal.entities.ProductoInfantil;
import portal.entities.ProductoModa;
import portal.entities.ProductoMueble;
import portal.entities.Usuario;
import portal.vo.CompraVO;
import portal.vo.ConfigVO;
import portal.vo.ProductoVO;
import portal.vo.UsuarioVO;

@Stateless
public class PortalComprasFacadeStatelessBean implements PortalComprasFacadeStateless{
	
	@EJB
	private AdministradorUsuarios administradorUsuarios;
	@EJB
	private AdministradorProductos administradorProductos;
	@EJB
	private AdministradorCompras administradorCompras;
	@EJB
	private AdministradorConfigs administradorConfigs;
	
	public UsuarioVO autenticarUsuario(UsuarioVO usuarioVO) {
		return administradorUsuarios.autenticarUsuario(usuarioVO);
	}

	@Override
	public void agregarProducto(ProductoVO productoVO) {
		Producto producto = null;
		
		if (productoVO.getProductoElectroDomesticoVO() != null) {
			producto = new ProductoElectroDomestico();
		} else if (productoVO.getProductoModaVO() != null) {
			producto = new ProductoModa();
		}else if (productoVO.getProductoMuebleVO() != null) {
			producto = new ProductoMueble();
		}else if (productoVO.getProductoInfantilVO() != null) {
			producto = new ProductoInfantil();
		}
		producto.setVO(productoVO);
		administradorProductos.agregarProducto(producto);
		
	}

	@Override
	public List<ProductoVO> getListaProductos() {
		return administradorProductos.getListaProductos();
	}

	@Override
	public ProductoVO getProductoByCodigo(Long codigo) {
		return administradorProductos.getProductoByCodigo(codigo);
	}

	@Override
	public ProductoVO getProductoById(Long idProducto) {
		return administradorProductos.getProductoById(idProducto);
	}

	@Override
	public List<ProductoVO> getListaProductosByCategoria(String categoria) {
		return administradorProductos.getListaProductosByCategoria(categoria);
	}

	@Override
	public List<ProductoVO> getListaProductosByNombre(String nombre) {
		return administradorProductos.getListaProductosByNombre(nombre);
	}

	@Override
	public CompraVO getCompraById(Long idCompra) {
		return administradorCompras.getCompraById(idCompra);
	}

	@Override
	public boolean actualizarEstadoCompra(Long idCompra) {
		return administradorCompras.actualizarEstadoCompra(idCompra);
		
	}

	@Override
	public List<CompraVO> getListaComprasByUsuario(UsuarioVO usuarioVO) {
		Usuario usuario = new Usuario();
		usuario.setVO(usuarioVO);
		return administradorCompras.getListaComprasByUsuario(usuario);
	}

	@Override
	public void actualizarRankingProductos(List<Ranking> listaRanking) {
		administradorProductos.actualizarRankingProductos(listaRanking);
		
	}
	
	
	@Override
	public List<ConfigVO> obtenerConfiguraciones() {
		List<Config> c = administradorConfigs.getConfigs();
		return convVo.getListaVoFromEntity(c);		
	}
	
	@Override
	public void actualizarConfiguraciones(List<ConfigVO> listaconfigs) {
		//administradorProductos.actualizarRankingProductos(listaRanking);
		
		for(ConfigVO c: listaconfigs) {
			administradorConfigs.setConfigValue(c);			
		}
		
	}

	
//	@Override
//	public Resultado enviarCompraALogistica(CompraVO vo) {
//		return administradorCompras.enviarCompraALogistica(vo);
//	}
	


	
}